import router from './index';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
import { getToken } from '@/utils/auth';
import { isRelogin } from '@/utils/request';

NProgress.configure({ showSpinner: false });

const whiteList = ['/login', '/register'];

router.beforeEach( async (to, from, next) => {
  NProgress.start()
  const userStore = useUserStore();

  if (getToken()) {
    if(to.path === '/login'){
      next({ path: '/' })
    } else if (whiteList.indexOf(to.path) !== -1) {
      // 在免登录白名单，直接进入
      next()
    } else {
      if (userStore.roles.length === 0) {
        isRelogin.show = true;
        try {
          await userStore.getInfo();
          isRelogin.show = false;
          next();
        } catch (err) {
          await userStore.logOut();
          next({ path: '/login' });
        }
      } else {
        next();
      }
    }
  } else {
    // 没有token
    if (whiteList.indexOf(to.path) !== -1) {
      // 在免登录白名单，直接进入
      next();
    } else {
      next(`/login?redirect=${to.fullPath}`);
      NProgress.done()
    }
  }

  // if (getToken()) {
  //
  //   to.meta.title && settingsStore.setTitle(to.meta.title as string);
  //
  //
  //   if(to.path === '/login'){
  //     next({ path: '/' })
  //     NProgress.done()
  //   } else if (whiteList.indexOf(to.path) !== -1) {
  //     // 在免登录白名单，直接进入
  //     next()
  //   } else {
  //     if (userStore.roles.length === 0) {
  //       isRelogin.show = true;
  //
  //       try {
  //         await userStore.getInfo();
  //         isRelogin.show = false;
  //       } catch (err) {
  //         await userStore.logOut();
  //         next({ path: '/login' });
  //       }
  //
  //       next();
  //     }
  //   }
  //
  // } else {
  //   // 没有token
  //   if (whiteList.indexOf(to.path) !== -1) {
  //     // 在免登录白名单，直接进入
  //     next()
  //   } else {
  //     next(`/login?redirect=${from.fullPath}`); // 否则全部重定向到登录页
  //     NProgress.done()
  //   }
  // }
})

router.afterEach(() => {
  NProgress.done()
})
